<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Coordenacao extends CI_Controller {

    /**
     * Controlador principal coordenacao;
     */
    public function __construct() {
        parent::__construct();
        get_acesso(2);
    }

    public function get_cograde($sc_ctx) {
        $sc_user = $this->session->userdata('co_usuario');
        if (!empty($sc_user) and ! empty($sc_ctx)) {
            $this->load->model('Model_academico');
            $co_ctx = str_replace('/', '', $sc_ctx);
            $co_grade = $this->Model_academico->get_cograde($sc_user, $co_ctx);
            return $co_grade;
        }
    }

    public function grade() {
        $metodo = $this->uri->segment(3);
        switch ($metodo) {
            case 'avaliar':
                $this->avaliargrade();
                break;
            case 'imprimir':
                $this->imprimirGrade();
                break;
            default:
                $this->listarGrades();
                break;
        }
    }

    public function requerimento() {
        $metodo = $this->uri->segment(3);
        switch ($metodo) {
            case 'novo':
                $this->novorequerimento();
                break;
            case 'mostrar':
                $this->mostrarRequerimento($this->uri->segment(4));
                break;
            default:
                $this->listar();
                break;
        }
    }

    /* SECAO DE METODOS UTILIZADOS COMO CONTROLADORES DE GRADE */

    public function listarGrades() {
        $this->load->model('Model_academico');
        $this->load->helper('rqr');
        $arquivosJS = array('jquery', 'dataTables', 'main_crd', 'tooltipster', 'lista_grade');
        $arquivosCSS = array('main', 'dataTables', 'tooltipster', 'requerimento');
        $data = ['rqs' => $this->Model_academico->listarGrades('20151', 1)];
        $params = array("arquivosJS" => $arquivosJS,
            "arquivosCSS" => $arquivosCSS,
            "titulo" => "SONIC :: Listagem de grades",
            "m_ativo" => "academico",
            "sm_ativo" => "grade");
        $this->load->view('header', $params);
        $this->load->view('crd/menu_lateral');
        $this->load->view('crd/lista_grades', $data);
        $this->load->view('footer');
    }
    
    // Montagem de grade horaria
    public function avaliargrade() {
        $co_grade = $this->uri->segment(4);
        if(empty($co_grade)){
            redirect('/coordenacao/grade/listar', 'refresh');
        }
        $arquivosJS = ['jquery', 'fancybox', 'jquery-ui', 'tooltipster', 'main_crd', 'modernizr', 'timeline_crd', 'grade_crd'];
        $arquivosCSS = ['main', 'grade_print', 'fancybox', 'timeline', 'tooltipster'];
        $this->load->model('Model_academico');
        $this->load->helper(['timeline', 'grade']);
        $grade = $this->Model_academico->get_grade($co_grade);
        $stsGrade = expire_grade($grade, 2);
        $data['tp_grade'] = $stsGrade['tipo'];
        $data['co_grade'] = $co_grade;
        $data['gr_atual'] = format_ctx($stsGrade['atual']);
        $data['eventos'] = $this->Model_academico->get_evt_grade($co_grade, ['dic-msg', 'int-msg']);
        $data['dias'] = ['Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'];
        $params = ["arquivosJS" => $arquivosJS, "arquivosCSS" => $arquivosCSS, "titulo" => "SONIC :: Avaliar solicitação de grade horária",
            "m_ativo" => "academico", "sm_ativo" => "grade"];
        $this->load->view('header', $params);
        $this->load->view('crd/menu_lateral');
        $this->load->view('crd/grade_horaria', $data);
        $this->load->view('footer');
    }

    public function rejeitarGrade() {
        $co_grade = $this->input->get('grade');
        $opR = $this->input->get('op');
        if (empty($opR)) {
            $this->load->view('crd/ajax/rjgrade');
        } else {
            $this->load->model('Model_academico');
            $this->load->helper('evento');
            $bad = get_evt('bad_msg', $co_grade);
            $int = get_evt('int_msg', $co_grade);
            $evt = [$bad, $int];
            $this->Model_academico->set_evt_grade($evt, 'R');
            $this->enviarMsg();
        }
    }
    
    public function aprovarGrade(){
        $co_grade = $this->uri->segment(3);
        if (empty($co_grade)) {
            echo 0;
        } else {
            $this->load->model('Model_academico');
            $this->load->helper('evento');
            $apr = get_evt('apr_msg', $co_grade);
            $this->Model_academico->set_evt_grade([$apr], 'P');
            echo 1;
        }
    }
    
    public function imprimirGrade(){
        $co_grade = $this->uri->segment(4);
        $this->load->model('Model_academico');
        $grade = $this->Model_academico->get_grade($co_grade);
        $bddcp = $this->Model_academico->get_dcp_bd($co_grade);
        $param = ['semestre' => $grade['NU_SEMESTRE_LETIVO'], 'status' => $grade['ST_STATUS_GRADE'],
            'dcp' => $bddcp];
        $this->load->view('crd/imprimir_grade', $param);
    }
    
    public function listarbd() {
        ajax_only();
        header('Content-Type: application/json');
        $grade = $this->uri->segment(3);
        $this->load->model('Model_academico');
        $bddcp = $this->Model_academico->get_dcp_bd($grade);
        $ldcp = [];
        foreach ($bddcp as $dcp) {
            $dia = ($dcp['st_turma_ead'] === 'S') ? 'grade_ead1' : 'grade_' . $dcp['CO_DIA'];
            $r = ["turma" => $dcp['CO_TURMA'], "disciplina" => $dcp['NO_DISCIPLINA'], "professor" => $dcp['NO_PROFESSOR'],
                "dia" => $dia];
            $ldcp[$dia . 'dcp' . $dcp['CO_TURMA']] = $r;
        }
        echo json_encode($ldcp);
    }

    public function enviarMsg() {
        ajax_only();
        $getMsg = $this->input->get('ds_msg');
        if (!empty($getMsg)) {
            $co_aluno = $this->session->userdata('co_usuario');
            $co_grade = $this->input->get('grade');
            $this->load->helper('texto');
            $ds_msg = strip_tags($this->input->get('ds_msg'), '<b><i><br>');
            $msg_tratada = termo_proibido($ds_msg);
            $msg_alu = ['CO_REMETENTE' => $co_aluno, 'TP_EVENTO' => 'crd-msg', 'DS_EVENTO' => $msg_tratada];
            $this->load->model('Model_academico');
            echo $this->Model_academico->send_msg_grade($msg_alu, $co_grade);
        } else {
            $this->load->view('aluno/ajax/enviar-msg');
        }
    }

    public function alterarMsg() {
        ajax_only();
        $op = $this->input->get('op');
        $this->load->model('Model_academico');
        $this->load->helper('texto');
        $id = $this->input->get('id');
        if ($op === 'remove' and ! empty($id)) {
            echo $this->Model_academico->edit_msg_grade('remove', $id);
        }
        if ($op === 'edit' and ! empty($id)) {
            $msgGET = $this->input->get('msg');
            $msg = strip_tags($msgGET, '<b><i><br>');
            $msg_tratada = termo_proibido($msg);
            $this->Model_academico->edit_msg_grade('edit', $id, $msg_tratada);
            echo $msg_tratada;
        }
        if ($op === 'read' and ! empty($id)) {
            echo $this->Model_academico->edit_msg_grade('read', $id);
        }
    }

    /* SECAO DE METODOS UTILIZADOS COMO CONTROLADORES DE REQUERIMENTOS */

    public function listar() {
        $this->load->model('Model_academico');
        $this->load->helper('rqr');
        $arquivosJS = array('jquery', 'dataTables', 'main', 'tooltipster', 'requerimento');
        $arquivosCSS = array('main', 'dataTables', 'tooltipster', 'requerimento');
        $usuario = $this->session->userdata('co_usuario');
        $data = ['rqs' => $this->Model_academico->listarRq($usuario)];
        $params = array("arquivosJS" => $arquivosJS,
            "arquivosCSS" => $arquivosCSS,
            "titulo" => "SONIC :: Requerimentos",
            "m_ativo" => "academico",
            "sm_ativo" => "requerimento");
        $this->load->view('header', $params);
        $this->load->view('aluno/menu_lateral');
        $this->load->view('aluno/lista_req', $data);
        $this->load->view('footer');
    }

    public function mostrarRequerimento($rqr) {
        $this->load->model('Model_academico');
        $details = $this->Model_academico->mostrarRq($rqr);
        $RQRdata = ['details' => $details[0]];
        $arquivosJS = array('jquery', 'main', 'timeline');
        $arquivosCSS = array('main', 'timeline', 'requerimento');
        $params = array("arquivosJS" => $arquivosJS,
            "arquivosCSS" => $arquivosCSS,
            "titulo" => "SONIC :: Mostrar requerimento",
            "m_ativo" => "academico",
            "sm_ativo" => "requerimento");
        $this->load->view('header', $params);
        $this->load->view('aluno/menu_lateral');
        $this->load->view('aluno/mostra_req', $RQRdata);
        $this->load->view('footer');
    }

}

/* End of file academico.php */
/* Location: ./application/controllers/coordenacao.php */